首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:286903 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足

输入描述:

输入一组密码,长度不超过100个字符。



输出描述:

输出密码变换后的字符串

示例1

输入

YUANzhi1987

输出

zvbo9441987
word = input()
new_word = ''
for i in word:
    if i.isdigit():
        new_word = new_word + i
    elif i.isalpha() and i.isupper():
            if i == 'Z':
                new_word = new_word + 'a'
            else:
                i = chr(ord(i.lower())+1)
                new_word = new_word + i
    elif i == 'a' or i == 'b' or i == 'c':
        new_word = new_word + '2'
    elif i == 'd' or i == 'e' or i == 'f':
        new_word = new_word + '3'
    elif i == 'g' or i == 'h' or i == 'i':
        new_word = new_word + '4'
    elif i == 'j' or i == 'k' or i == 'l':
        new_word = new_word + '5'
    elif i == 'm' or i == 'n' or i == 'o':
        new_word = new_word + '6'
    elif i == 'p' or i == 'q' or i == 'r' or i == 's':
        new_word = new_word + '7'
    elif i == 't' or i == 'u' or i == 'v':
        new_word = new_word + '8'
    elif i == 'w' or i == 'x' or i == 'y' or i == 'z':
        new_word = new_word + '9'
    elif i == '1':
        new_word = new_word + '1'
    elif i == '0':
        new_word = new_word + '0'

print(new_word)


编辑于 2024-04-01 21:13:38 回复(0)
while True:
    try:
        A='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        B='22233344455566677778889999bcdefghijklmnopqrstuvwxyza'
        list1=[]
        list2=[]
        #将A,B写入列表list1和list2 中
        for i in A:
            list1.append(i)
        for j in B:
            list2.append(j)
        res=input()
        ans=[]
        for i in res:
            if i in list1:
                ans.append(list2[list1.index(i)])
            else:
                ans.append(i)
        print(''.join(ans))
    except:
        break


#第二种比较合适的方法:
while True:
    try:
        pw=input()
        res=[]
        for i in pw:
            if i.isupper() and i!='Z':
                res.append(chr(ord(i.lower())+1))
            if i=='Z':
                res.append('a')
            elif ord(i) in range(97,123):
                if i in 'abc':
                    res.append('2')
                if i in 'def':
                    res.append('3')
                if i in 'ghi':
                    res.append('4')
                if i in 'jkl':
                    res.append('5')
                if i in 'mno':
                    res.append('6')
                if i in 'pqrs':
                    res.append('7')
                if i in 'tuv':
                    res.append('8')
                if i in 'wxyz':
                    res.append('9')
            else:
                res.append(i)
        print(''.join(res))  
    except:
        break


发表于 2024-03-04 15:01:15 回复(0)
import sys

mima = {'abc': 2, 'def': 3, 'ghi': 4, 'jkl': 5, 'mno': 6, 'pqrs': 7, 'tuv': 8, 'wxyz': 9}
translated_mima = ''

for line in sys.stdin:
    a = line.split()
    for s in a[0]:
        if s.islower() == True:
            for keys in mima.keys():
                if s in keys:
                    translated_mima = translated_mima + str(mima[keys])
        elif s.isupper() == True:
            if s != 'Z':
                s = chr(ord(s) + 33)
            else:
                s = 'a' 
            translated_mima = translated_mima + s
        else:
            translated_mima = translated_mima + s

print(translated_mima)

发表于 2023-03-23 21:59:51 回复(0)
str1 = input()
str2 = ""
lis = ["abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
for i in str1:
    if 65 <= ord(i) <= 90:
        if ord(i)==90:
            str2 += chr(ord(i) + 7)
        else:
            str2 += chr(ord(i) + 33)
    elif 97 <= ord(i) <= 122:
        for j in lis:
            if i in j:
                str2 += str(lis.index(j) + 2)
                break
    else:
        str2 += i
print(str2)

发表于 2023-02-20 16:56:24 回复(0)
#encoding=utf-8

str1 = input()
dict1 = {"1":1,"abc":2,"def":3,"ghi":4,"jkl":5,"mno":6,"pqrs":7,"tuv":8,"wxyz":9,"0":0}
list1 = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

en = []
num = []
new = ""
for key,values in dict1.items():
    en.append(key)
    num.append(values)
for i in str1:
    if i.isalpha():
        if i.isupper():
            x = list1.index(i.lower())#当是大写时,获取字母的下标
            if x+1 == len(list1):
                x = -1
            new= new+list1[x+1] #将字母的后一个添加到列表
        else:
            for n in en:
                if i in n:
                    x = en.index(n)
                    new = new+str(num[x])
    else:
        new = new+i
print(new)
发表于 2022-11-04 09:25:55 回复(0)
password = input()
New_pass = ''
beta = 'abc def ghi jkl mno pqrs tuv wxyz'
for alp in password:
    if alp.isalpha():
        if alp.isupper() and alp != 'Z':
            New_pass += str(chr(ord(alp.lower()) + 1))
        elif alp == 'Z':
            New_pass += 'a'
        elif alp.islower():
            for i,j in enumerate(beta.split()):
                if alp in j:
                    New_pass += str(i + 2)
    else:
        New_pass += alp
print(New_pass)

发表于 2022-08-30 11:33:38 回复(0)
s=input()
res=[]
for i in s:
    if i.isdigit():    #数字
        res.append(i)
    elif i.isupper() and i != 'Z':    #大写
        res.append(chr(ord(i.lower()) + 1))    #lower()转为小写,ord()转为十进制,chr()转为ASCII字符
    elif i == 'Z':
        res.append('a')
    else:
        if i in 'abc':
            res.append('2')
        elif i in 'def':
            res.append('3')
        elif i in 'ghi':
            res.append('4')
        elif i in 'jkl':
            res.append('5')
        elif i in 'mno':
            res.append('6')
        elif i in 'pqrs':
            res.append('7')
        elif i in 'tuv':
            res.append('8')
        else:
            res.append('9')
print(''.join(res))  
发表于 2022-08-27 22:09:50 回复(0)
简单思路,先创建一个dict用来存储这些转化
大写的转化那里需要用到ASC2码的转化
大写先用str.lower()转小写
然后用ord转ASC码
如果是z的话,需要手动定义等于z
其他的子需要将asc码+1就得到了下一个字母的asc码
import sys
 
for line in sys.stdin:
    a = line.split()
    str_input = a[0]


change_dict = {"1":1,"a":2,"b":2,"c":2,"d":3,"e":3,"f":3,"g":4,"h":4,"i":4,
              "j":5,"k":5,"l":5,"m":6,"n":6,"o":6,"p":7,"q":7,"r":7,"s":7,
              "t":8,"u":8,"v":8,"w":9,"x":9,"y":9,"z":9,"0":0}
result = ""
for i in str_input:
    if(i.isupper()):
        #先转化小写
        up_i = i.lower()

        #转化码
        ac2_up_i = ord(up_i)
        if(ac2_up_i == ord("z")):
            ac2_up_i = ord("a")
            result = result + chr(ac2_up_i)
        else:
            result = result + chr(ac2_up_i+1)
    elif(i.isdigit()):
        result = result + str(i)
    else:
        result = result + str(change_dict[i])
print(result)


发表于 2022-08-18 14:47:26 回复(0)
# 输入一串字符
str1 = list(input())  # 输入的转化为列表
# 注意这里不能直接把输入的进行切分成列表
# str1 = input().strip()#这样是错误的写法
# 定义一个用于存储变量的
temp = ''
# 遍历列表
for i in str1:
    # 分成三种情况:小写,大写,数字
    # 首先解决是小写子母的
    if i.islower():  # 小写
        abc_list = ["a","b","c"]
        def_list = ["d","e","f"]
        ghi_list = ["g","h","i"]
        jkl_list = ["j","k","l"]
        mon_list = ["m","o","n"]
        pqrs_list = ["p","q","r","s"]
        tuv_list = ["t","u","v"]
        wxyz_list = ["w","x","y","z"]

        if i in abc_list:
            i = "2"
            temp = temp + i
        elif i in def_list:
            i = "3"
            temp = temp + i
        elif i in ghi_list:
            i = "4"
            temp = temp + i
        elif i in jkl_list:
            i = "5"
            temp = temp + i
        elif i in mon_list:
            i = "6"
            temp = temp + i
        elif i in pqrs_list:
            i = "7"
            temp = temp + i
        elif i in tuv_list:
            i = "8"
            temp = temp + i
        elif i in wxyz_list:
            i = "9"
            temp = temp + i

    # elif a.isnumeric():
    # 大写:
    elif i.isupper(): # 大写
        # 把大写的转化成小写字母
        i =  i.lower()
        # 使用ascall码进行加一转化
        i_ascall = ord(i) + 1
        # 如果是123的ascall码那么要把它变成a的,也就是对应z的ascall码+1
        if i_ascall == 123:
            i_ascall = ord("a")
        i = chr(i_ascall)  # 在把ascall码转换回字母完成转化
        temp = temp + i
    # 如果是数字,那么可以直接使用
    elif i.isalnum(): # 数字
        i = str(i)  # 把数字转化成字符串,否则无法拼接
        temp = temp + i

print(temp)


发表于 2022-08-17 23:19:09 回复(0)
def encryption(string):
    dct = {}
    key   = 'ZABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz1234567890'
    value = 'abcdefghijklmnopqrstuvwxyz222333444555666777788899991234567890'
    for i,s in enumerate(key):
        k, v = s, value[i]
        dct[k] = v
    for i in string:
        print(dct[i], end='')
encryption(input())

发表于 2022-08-13 18:34:40 回复(0)
password_0 = input()
pas=[]
for i in password_0:
    if i in 'abc':
        pas.append('2')
    elif i in 'def':
        pas.append('3')
    elif i in 'ghi':
        pas.append('4')
    elif i in 'jkl':
        pas.append('5')
    elif i in 'mno':
        pas.append('6')
    elif i in 'pqrs':
        pas.append('7')
    elif i in 'tuv':
        pas.append('8')
    elif i in 'wxyz':
        pas.append('9')
    elif i.isupper() and i != 'Z':
        pas.append(chr(ord(i.lower())+1))
    elif i=='Z':
        pas.append('a')
    else:   #i.isdigit()判断为数字,此处else包含数字和其他字符
        pas.append(i)
print(''.join(pas))

发表于 2022-08-02 23:18:07 回复(0)
ip = input()
for c in ip:
    if "a"<=c<="z":  # 小写
        if 'a'<=c<='c':
            print(2,end='')
        elif 'd'<=c<='f':
            print(3,end='')
        elif 'g'<=c<='i':
            print(4,end='')
        elif 'j'<=c<='l':
            print(5,end='')
        elif 'm'<=c<='o':
            print(6,end='')
        elif 'p'<=c<='s':
            print(7,end='')
        elif 't'<=c<='v':
            print(8,end='')
        elif '9'<=c<='z':
            print(9,end='')
    
    elif "A"<=c<="Z":
        tmp = c.lower() # 大写变小写
        tmp = ord(tmp) + 1 # 往前走1
        if tmp > ord('z'):
            print('a', end='')
        else:
            print(chr(tmp), end='')
        pass #大写
    else:
        print(c,end='')
    
发表于 2022-07-28 20:09:08 回复(0)
string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
string2 = "bcdefghijklmnopqrstuvwxyza222333444555666777788899990123456789"
s = input()
for i in s:
    print(string2[string.index(i)],end='')
发表于 2022-07-24 21:46:33 回复(0)
s = input()
a = []
zhimu = "abcdefghijklmnopqrstuvwxyz"
for i in range(len(s)):
    a.append(s[i])
    if a[i] in 'abc':
        a[i] = 2
    elif a[i] in 'def':
        a[i] = 3
    elif a[i] in 'ghi':
        a[i] = 4
    elif a[i] in 'jkl':
        a[i] = 5
    elif a[i] in 'mno':
        a[i] = 6
    elif a[i] in 'pqrs':
        a[i] = 7
    elif a[i] in 'tuv':
        a[i] = 8
    elif a[i] in 'wxyz':
        a[i] = 9
    elif a[i].isupper():
        if a[i] !='Z':
            b = a[i].lower()
            indec = zhimu.index(b)
#             print(indec)
            a[i] = zhimu[indec+1]
#             print(a[i])
        if a[i] == 'Z':
            a[i] = 'a'
    else:
        a[i] = a[i]
# print(a)
pp = ''
for i in a:
    pp = pp+str(i)
print(pp)
        

发表于 2022-07-23 15:43:38 回复(0)
def str_tran(get_str):
    lst_str = []
    for i in get_str:
        lst_str.append(i)
    for j in range(len(lst_str)):
        if ord(lst_str[j]) == ord('Z'):
            lst_str[j] = 'a'
        elif ord(lst_str[j]) >= 65 and ord(lst_str[j]) < 90:
            lst_str[j] = chr(ord(lst_str[j])+32+1)
        elif lst_str[j] in 'abc':
            lst_str[j] = '2'
        elif lst_str[j] in 'def':
            lst_str[j] = '3'
        elif lst_str[j] in 'ghi':
            lst_str[j] = '4'
        elif lst_str[j] in 'jkl':
            lst_str[j] = '5'
        elif lst_str[j] in 'mno':
            lst_str[j] = '6'
        elif lst_str[j] in 'pqrs':
            lst_str[j] = '7'
        elif lst_str[j] in 'tuv':
            lst_str[j] = '8'
        elif lst_str[j] in 'wxyz':
            lst_str[j] = '9'
    return ''.join(lst_str)
get_str = input()
print(str_tran(get_str))

发表于 2022-07-20 22:42:39 回复(0)
python3 可以事先写个dict
while True:
    try:
        code_input = input()
        code_output = ""
        for element in code_input:
            if element.isdigit():
                code_output += element
            elif element.isalpha():
                if "A"<=element<"Z":
                    element = chr(ord(element.lower())+1)
                    code_output += element
                elif element == "Z":
                    code_output += "a"
                elif element in "abc":
                    code_output += "2"
                elif element in "def":
                    code_output += "3"
                elif element in "ghi":
                    code_output += "4"
                elif element in "jkl":
                    code_output += "5"
                elif element in "mno":
                    code_output += "6"
                elif element in "pqrs":
                    code_output += "7"
                elif element in "tuv":
                    code_output += "8"
                elif element in "wxyz":
                    code_output += "9"
        print(code_output)
        
    except:
        break


发表于 2022-07-13 16:56:41 回复(0)
s = input()
dic = {}
dic[1] = '1'
dic[2] = 'abc'
dic[3] = 'def'
dic[4] = 'ghi'
dic[5] = 'jkl'
dic[6] = 'mno'
dic[7] = 'pqrs'
dic[8] = 'tuv'
dic[9] = 'wxyz'
dic[0] = '0'
ss = 'abc' + 'def' + 'ghi'+'jkl'+'mno'+'pqrs'+'tuv'+'wxyz'
sss = ''
for i in range(len(s)):
    if s[i].isdigit():
        sss += s[i]
    else:
        if s[i].lower() == s[i]:
            for key, value in dic.items():
                if s[i] in value:
                    sss += str(key)
                    break
        else:
            for j in range(26):
                if s[i].lower() == ss[j]:
                    if j ==25:
                        sss += ss[0]
                    else:
                        sss += ss[j+1]
                    break
print(sss)
发表于 2022-07-13 11:05:41 回复(0)
s_n = {1:'1',2:'abc',3:'def',4:'ghi',5:'jkl',6:'mno',7:'pqrs',8:'tuv',9:'wxyz',0:'0'}
S = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
strs = input()
new_strs = ''
for i in strs:
    if 'a' <= i <= 'z':
        for k,v in s_n.items():
            if i in v:
                new_strs += str(k)
    elif 'A' <= i <= 'Z':
        num1 = (S.index(i.lower()) + 1) % 26
        new_strs += S[num1]
    else:
        new_strs += i
print(new_strs)

发表于 2022-07-12 17:24:35 回复(0)